package com.smartfast4j.springboot.config.demo.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.text.MessageFormat;

/**
 * Created by gacl on 2017/11/17.
 * 通过@Value将外部配置文件的值动态注入到Bean中。配置文件主要有两类：
 application.properties。
        application.properties（application.yml）在spring boot启动时默认加载此文件
 自定义属性文件。
        自定义属性文件通过@PropertySource加载。@PropertySource可以同时加载多个文件，也可以加载单个文件。如果相同第一个属性文件和第二属性文件存在相同key，则最后一个属性文件里的key启作用。
 */
@RestController
//@PropertySource(value = "classpath:sFtpConfig.properties")//加载单个文件，指明配置文件路径
@PropertySource(value = {"classpath:sFtpConfig.properties","classpath:config/test.properties"})//加载多个文件，指明配置文件路径
public class MyController {

    @Value("${my.name}")//属性来自application.yml配置文件
    private String name;
    @Value("${my.age}")//属性来自application.yml配置文件
    private int age;
    @Value("${my.sex}")//属性来自application.yml配置文件
    private String sex;
    @Value("${my.number}")//属性来自application.yml配置文件
    private String number;
    @Value("${my.uuid}")//属性来自application.yml配置文件
    private String uuid;
    @Value("${my.max}")//属性来自application.yml配置文件
    private String max;
    @Value("${my.value}")//属性来自application.yml配置文件
    private String value;
    @Value("${my.greeting}")//属性来自application.yml配置文件
    private String greeting;

    @Value("${sftp.server.ip}")//属性来自sFtpConfig.properties配置文件
    private String ip;
    @Value("${sftp.server.username}")//属性来自sFtpConfig.properties配置文件
    private String username;
    @Value("${sftp.server.password}")//属性来自sFtpConfig.properties配置文件
    private String password;
    @Value("${sftp.server.workingPath}")//属性来自sFtpConfig.properties配置文件
    private String workingPath;
    @Value("${sftp.server.port}")//属性来自sFtpConfig.properties配置文件
    private int port;
    @Value("${sftp.server.domain}")//属性来自sFtpConfig.properties配置文件
    private String domain;

    @Value("${fastdfs.http_server}")//属性来自config/test.properties配置文件
    private String httpServer;
    @Value("${fastdfs.group_name}")//属性来自config/test.properties配置文件
    private String groupName;

    @RequestMapping("/my")
    public String my(){
        String info = MessageFormat.format("name：{0}，age：{1}，sex：{2}，number：{3}，uuid：{4}，max：{5}，value：{6}，greeting：{7}"
        ,name,age,sex,number,uuid,max,value,greeting
        );
        return info;
    }

    @RequestMapping("/sFtp")
    public String sFtp(){
        String info = MessageFormat.format("ip：{0}，username：{1}，password：{2}，workingPath：{3}，port：{4}，domain：{5}"
                ,ip,username,password,workingPath,port,domain
        );
        return info;
    }

    @RequestMapping("/fdfs")
    public String fdfs(){
        String info = MessageFormat.format("httpServer：{0}，groupName：{1}",httpServer,groupName);
        return info;
    }
}
